package com.briup.smartcity_group1.utils;

import java.util.regex.Pattern;

/**参数校验工具类
 * @author congee(congee02 @ 163.com)
 * @date 1/3/2023 1:54 PM
 */
public class CheckUtils {

    private static final String EMAIL_REGEX =
            "^(\\w+([-.][A-Za-z0-9]+)*){3,18}@\\w+([-.][A-Za-z0-9]+)*\\.\\w+([-.][A-Za-z0-9]+)*$";

    private static final String TELEPHONE_REGEX = "^1[3-9]\\d{9}$";

    // 用户名为4到30位字符串，其中首个字符必须是字母，后面的字符可以是字母数组，下划线
    private static final String USERNAME_REGEX = "^[A-Za-z][A-Za-z0-9_]{3,29}$";

    private CheckUtils() {
    }

    /** 邮箱参数校验
     * @param email 待验证的邮箱地址字符串
     * @return  邮箱地址是否合法？
     */
    public static boolean checkEmail(String email) {
        if (email == null || email.isEmpty()) {
            return false;
        }
        return Pattern.matches
                (EMAIL_REGEX, email);
    }

    /** 手机号参数校验
     * @param telephone 待验证的手机号字符串
     * @return  手机号是否合法?
     */
    public static boolean checkTelephone(String telephone) {
        if (telephone == null || telephone.isEmpty()) {
            return false;
        }
        return Pattern.matches(TELEPHONE_REGEX, telephone);
    }

    /** 用户名参数校验
     * 用户名为4到8位字符串，其中首个字符必须是字母，后面的字符可以是字母数组，横杠，下划线
     * @param username 待验证的用户名字符串
     * @return  用户名是否合法?
     */
    public static boolean checkUsername(String username) {
        if (username == null || username.isEmpty()) {
            return false;
        }
        return Pattern.matches(USERNAME_REGEX, username);
    }

}
